package com.xafc.demo.sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xafc.demo.sys.model.dto.MenuDto;
import com.xafc.demo.sys.model.dto.RoleDto;
import com.xafc.demo.sys.model.dto.UserDto;
import com.xafc.demo.sys.model.entity.User;
import com.xafc.demo.framework.result.ResultCode;
import com.xafc.demo.sys.model.query.UserPageQuery;

import java.util.List;

public interface IUserService extends IService<User> {
    /**
     * 获取用户列表
     * @param query 查询条件
     * @return 分页数据
     */
    Page<UserDto> getUserListByWrapper(UserPageQuery query);

    /**
     * 获取用户列表
     * @param query 查询条件
     * @return 分页数据
     */
    Page<UserDto> getUserList(UserPageQuery query);

    /**
     * 获取用户
     * @param id 根据ID
     * @return
     */
    User getUserById(Integer id);

    /**
     * 获取用户
     * @param username 根据用户名
     * @return
     */
    User getUserByUsername(String username);

    /**
     * 获取用户
     * @param ids 根据ID批量查询
     * @return
     */
    List<User> getUserByIds(List<Integer> ids);

    /**
     * 新增用户
     * @param user 用户对象
     * @return 是否成功
     */
    ResultCode addUser(User user);

    /**
     * 修改用户
     * @param user 用户对象
     * @return 是否成功
     */
    ResultCode updateUser(User user);

    /**
     * 删除用户
     * @param id 用户ID
     * @return
     */
    ResultCode deleteUser(Integer id);

    /**
     * 获取当前用户的所有角色
     * @return
     */
    List<RoleDto> getUserRole(Integer id);


    /**
     * 获取当前用户的所有权限
     * @return
     */
    List<MenuDto> getUserPerm(Integer id);
}
